package com.ft.oa.domain.check;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ft.oa.domain.Attachment;
import com.ft.oa.domain.approval.ApplyForApproval;
import com.ft.oa.domain.dto.knowledgeBase.AttachmentDto;
import com.ft.oa.domain.project.ExecProjectContract;
import com.ft.oa.utils.SecurityUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "exec_project_examine", autoResultMap = true)
public class ExecProjectExamine {

	/**
	 * 主键id
	 */
	@TableId(type = IdType.AUTO)
	private Long id;
	/**
	 * 父项目编码
	 */
	private String parentId;
	/**
	 * 立项项目编码
	 */
	private String relationId;
	/**
	 * 立项项目编码
	 */
	private String projectNumber;
	/**
	 * 立项项目名称
	 */
	private String projectName;
	/**
	 * 验收阶段Id
	 */
	private Long checkStageId;
	/**
	 * 验收阶段
	 */
	private String checkStage;
	/**
	 * 验收形式Id
	 */
	private Long checkFormId;
	/**
	 * 验收形式
	 */
	private String checkForm;
	/**
	 * 验收日期
	 */
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
	private LocalDate checkTime;
	/**
	 * 回款金额
	 */
	private BigDecimal returnedMoney;
	/**
	 * 验收评价id
	 */
	private Integer checkEvaluateId;
	/**
	 * 验收评价
	 */
	private String checkEvaluate;
	/**
	 * 客户验收人员
	 */
	private String customerName;
	/**
	 * 联系方式
	 */
	private String contact;
	/**
	 * 验收负责人id
	 */
	private Integer checkNameId;
	/**
	 * 验收负责人
	 */
	private String checkName;
	/**
	 * 是否质保（1：是 0：否）
	 */
	private Integer quality;

	/**
	 * 是否有遗留问题（0：是 1：否）
	 */
	@TableField(exist = false)
	private String leftoverProblem;
	/**
	 * 验收关联合同
	 */
	private String checkContract;
	/**
	 * 验收过程描述
	 */
	private String checkDescr;
	/**
	 * 数据状态
	 */
	private Integer state;
	/**
	 * 附件id
	 */
	private String fileIds;
	/**
	 * 项目验收遗留问题
	 */
	@TableField(exist = false)
	private List<ExecProjectProblem> execProjectProblems;

	/**
	 * 列表合同信息
	 */
	@TableField(exist = false)
	List<ExecProjectContract> execProjectContracts;

	/**
	 * 查询全部合同合同信息（复选框）
	 */
	@TableField(exist = false)
	List<ExecProjectContract> execProjectContract;

	/**
	 * 文件归档情况
	 */
	@TableField(exist = false)
	private double fileDocument;

	/**
	 * 合同总金额
	 */
	@TableField(exist = false)
	private BigDecimal totalMoney;
	/**
	 * 备注信息
	 */
	private String remark;

	/**
	 * 审批人集合
	 */
	@TableField(exist = false)
	private List<ApplyForApproval> checkList;

	/**
	 * 抄送人集合
	 */
	@TableField(exist = false)
	private List<ApplyForApproval> noticeList;

	/**
	 * 审核状态
	 */
	private Integer approvalStatus;

	@TableField(exist = false)
	private List<AttachmentDto> attachments;

	private String achment;

	@TableField(exist = false)
	private List<Attachment> attachment;

	/**
	 * 创建人id
	 */
	private Long creator = SecurityUtils.getCurrentUser().getId();

	/**
	 * 创建时间
	 */
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
	private LocalDateTime createTime = LocalDateTime.now();

	/**
	 * 修改时间
	 */
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
	private LocalDateTime updateTime = LocalDateTime.now();

	/**
	 * 修改人id
	 */
	private Long editor = SecurityUtils.getCurrentUser().getId();

	/**
	 * 质保负责人
	 */
	@TableField(exist = false)
	private Integer qualityAssuranceOfficer;

}
